package com.example.leetcode.prcatice;

import java.util.HashSet;
import java.util.Set;

/**
 * 给你一个字符串 word ，该字符串由数字和小写英文字母组成。
 *
 * 请你用空格替换每个不是数字的字符。例如，"a123bc34d8ef34" 将会变成 " 123  34 8  34" 。注意，剩下的这些整数为（相邻彼此至少有一个空格隔开）："123"、"34"、"8" 和 "34" 。
 *
 * 返回对 word 完成替换后形成的 不同 整数的数目。
 *
 * 只有当两个整数的 不含前导零 的十进制表示不同， 才认为这两个整数也不同。
 *
 *  
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/number-of-different-integers-in-a-string
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test1805 {


    public int numDifferentIntegers(String word) {
        Set<Integer> set = new HashSet<>();
        for (int i = 0;i<word.length();i++) {
            int t = 0;
            char c = word.charAt(i);
            if (Character.isDigit(c)) {
                int j = 0;
                boolean add = false;
                while (i < word.length() && Character.isDigit(c)) {
                    int k = c - '0';
                    if (k > 0) {
                        add = true;
                    }
                    t = t * j * 10 + k;
                    i++;
                    if (add) {
                        j++;
                    }
                   if (i < word.length()){
                       c = word.charAt(i);
                   }
                }
                set.add(t);
            }
        }
        return set.size();
    }

    public static void main(String[] args) {
        Test1805 t = new Test1805();
        System.out.println(t.numDifferentIntegers("a123bc34d8ef34"));
    }
}
